package com.mxpio.erp.technology.util;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;

public class LengthUtil {

    private static BigDecimal POINT_FIVE = new BigDecimal("0.5");

    private static Map<String,BigDecimal> offsets = new HashMap<>();
    static {
        offsets.put("0",BigDecimal.ZERO);
        offsets.put("1",POINT_FIVE);
        offsets.put("2",POINT_FIVE);
        offsets.put("3",POINT_FIVE);
        offsets.put("4",POINT_FIVE);
        offsets.put("5",POINT_FIVE);
        offsets.put("6",BigDecimal.ONE);
        offsets.put("7",BigDecimal.ONE);
        offsets.put("8",BigDecimal.ONE);
        offsets.put("9",BigDecimal.ONE);
    }

    /**
     * 需求长度进行小数点第一位处理
     * （当第一位数据为1、2、3、4时，统一更新为5,第二位数据及以后舍弃；
     * 当第一位数据为6、7、8、9时，个位数+1,小数点第一位更新为0，第二位及以后数据舍弃；
     * 当第一位数据为0、5时，第二位及以后数据舍弃）
     * @param length
     * @return
     */
    public static BigDecimal done(BigDecimal length){
        BigDecimal intNumber = BigDecimal.valueOf(length.intValue());
        BigDecimal decimalNum = length.subtract(intNumber);
        String x = String.valueOf(decimalNum.multiply(BigDecimal.TEN).intValue());
        BigDecimal offset = offsets.get(x);
        return intNumber.add(offset) ;
    }

    public static void main(String [] arg){
        System.out.println(LengthUtil.done(new BigDecimal("5.61")));
    }
}
